Load libraries
library(knitr)
library(rmdformats)
library(ggplot2)
library(ggpubr)
library(GGally)
library(car)
library(tidyverse)
library(lme4)
library(lmerTest)
library("MuMIn")
library(lmtest)
library(boot)
Read datasets
AllSubs_NeuralActivation <- read.csv('/Users/luisalvarez/Documents/GitHub/RM_Thesis_Neuroforecasting/ProcessedData/AllSubs_NeuralActivation_Aggregate_Combined_clean.csv')
AllSubs_NeuralActivation_Comedy <- read.csv('/Users/luisalvarez/Documents/GitHub/RM_Thesis_Neuroforecasting/ProcessedData/AllSubs_NeuralActivation_Aggregate_Combined_Comedy_clean.csv')
AllSubs_NeuralActivation_Horror <- read.csv('/Users/luisalvarez/Documents/GitHub/RM_Thesis_Neuroforecasting/ProcessedData/AllSubs_NeuralActivation_Aggregate_Combined_Horror_clean.csv')
Create data frames for each model.
# Define aggregate variables.
All_Gross_M1_log <- log(AllSubs_NeuralActivation$Gross_US_M1)
All_Theaters_M1 <- AllSubs_NeuralActivation$Theaters_US_M1
Comedy_Gross_M1_log <- log(AllSubs_NeuralActivation_Comedy$Gross_US_M1)
Comedy_Theaters_M1 <- AllSubs_NeuralActivation_Comedy$Theaters_US_M1
Horror_Gross_M1_log <- log(AllSubs_NeuralActivation_Horror$Gross_US_M1)
Horror_Theaters_M1 <- AllSubs_NeuralActivation_Horror$Theaters_US_M1
M1_df <- data.frame(All_Gross_M1_log, All_Theaters_M1)
M1_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_Theaters_M1)
M1_H_df <- data.frame(Horror_Gross_M1_log, Horror_Theaters_M1)
# Define affect variables.
All_PA <- AllSubs_NeuralActivation$Pos_arousal_scaled
All_NA <- AllSubs_NeuralActivation$Neg_arousal_scaled
Comedy_PA <- AllSubs_NeuralActivation_Comedy$Pos_arousal_scaled
Comedy_NA <- AllSubs_NeuralActivation_Comedy$Neg_arousal_scaled
Horror_PA <- AllSubs_NeuralActivation_Horror$Pos_arousal_scaled
Horror_NA <- AllSubs_NeuralActivation_Horror$Neg_arousal_scaled
M2_df <- data.frame(All_Gross_M1_log, All_PA, All_NA)
M2_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA)
M2_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA)
# Define ISC variables.
All_NAcc_ISC <- AllSubs_NeuralActivation$NAcc_ISC
All_AIns_ISC <- AllSubs_NeuralActivation$AIns_ISC
All_MPFC_ISC <- AllSubs_NeuralActivation$MPFC_ISC
Comedy_NAcc_ISC <- AllSubs_NeuralActivation_Comedy$NAcc_ISC
Comedy_AIns_ISC <- AllSubs_NeuralActivation_Comedy$AIns_ISC
Comedy_MPFC_ISC <- AllSubs_NeuralActivation_Comedy$MPFC_ISC
Horror_NAcc_ISC <- AllSubs_NeuralActivation_Horror$NAcc_ISC
Horror_AIns_ISC <- AllSubs_NeuralActivation_Horror$AIns_ISC
Horror_MPFC_ISC <- AllSubs_NeuralActivation_Horror$MPFC_ISC
# Define models.
M4_df <- data.frame(All_NAcc_ISC, All_AIns_ISC, All_MPFC_ISC)
M4_C_df <- data.frame(Comedy_NAcc_ISC, Comedy_AIns_ISC, Comedy_MPFC_ISC)
M4_H_df <- data.frame(Horror_NAcc_ISC, Horror_AIns_ISC, Horror_MPFC_ISC)
M5_df <- data.frame(All_Gross_M1_log, All_PA, All_NA, All_NAcc_ISC, All_AIns_ISC, All_MPFC_ISC)
M5_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_ISC, Comedy_AIns_ISC, Comedy_MPFC_ISC)
M5_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA, Horror_NAcc_ISC, Horror_AIns_ISC, Horror_MPFC_ISC)
# Define whole variables.
All_NAcc_whole <- AllSubs_NeuralActivation$NAcc_whole
All_AIns_whole <- AllSubs_NeuralActivation$AIns_whole
All_MPFC_whole <- AllSubs_NeuralActivation$MPFC_whole
Comedy_NAcc_whole <- AllSubs_NeuralActivation_Comedy$NAcc_whole
Comedy_AIns_whole <- AllSubs_NeuralActivation_Comedy$AIns_whole
Comedy_MPFC_whole <- AllSubs_NeuralActivation_Comedy$MPFC_whole
Horror_NAcc_whole <- AllSubs_NeuralActivation_Horror$NAcc_whole
Horror_AIns_whole <- AllSubs_NeuralActivation_Horror$AIns_whole
Horror_MPFC_whole <- AllSubs_NeuralActivation_Horror$MPFC_whole
# Define models.
M6_df <- data.frame(All_NAcc_whole, All_AIns_whole, All_MPFC_whole)
M6_C_df <- data.frame(Comedy_NAcc_whole, Comedy_AIns_whole, Comedy_MPFC_whole)
M6_H_df <- data.frame(Horror_NAcc_whole, Horror_AIns_whole, Horror_MPFC_whole)
M7_df <- data.frame(All_Gross_M1_log, All_PA, All_NA, All_NAcc_whole, All_AIns_whole, All_MPFC_whole)
M7_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_whole,
Comedy_AIns_whole, Comedy_MPFC_whole)
M7_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA, Horror_NAcc_whole,
Horror_AIns_whole, Horror_MPFC_whole)
# Define onset variables.
All_NAcc_onset <- AllSubs_NeuralActivation$NAcc_onset
All_AIns_onset <- AllSubs_NeuralActivation$AIns_onset
All_MPFC_onset <- AllSubs_NeuralActivation$MPFC_onset
Comedy_NAcc_onset <- AllSubs_NeuralActivation_Comedy$NAcc_onset
Comedy_AIns_onset <- AllSubs_NeuralActivation_Comedy$AIns_onset
Comedy_MPFC_onset <- AllSubs_NeuralActivation_Comedy$MPFC_onset
Horror_NAcc_onset <- AllSubs_NeuralActivation_Horror$NAcc_onset
Horror_AIns_onset <- AllSubs_NeuralActivation_Horror$AIns_onset
Horror_MPFC_onset <- AllSubs_NeuralActivation_Horror$MPFC_onset
# Define models.
M8_df <- data.frame(All_NAcc_onset, All_AIns_onset, All_MPFC_onset)
M8_C_df <- data.frame(Comedy_NAcc_onset, Comedy_AIns_onset, Comedy_MPFC_onset)
M8_H_df <- data.frame(Horror_NAcc_onset, Horror_AIns_onset, Horror_MPFC_onset)
M9_df <- data.frame(All_Gross_M1_log, All_PA, All_NA, All_NAcc_onset, All_AIns_onset, All_MPFC_onset)
M9_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_onset,
Comedy_AIns_onset, Comedy_MPFC_onset)
M9_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA, Horror_NAcc_onset,
Horror_AIns_onset, Horror_MPFC_onset)
# Define middle variables.
All_NAcc_middle <- AllSubs_NeuralActivation$NAcc_middle
All_AIns_middle <- AllSubs_NeuralActivation$AIns_middle
All_MPFC_middle <- AllSubs_NeuralActivation$MPFC_middle
Comedy_NAcc_middle <- AllSubs_NeuralActivation_Comedy$NAcc_middle
Comedy_AIns_middle <- AllSubs_NeuralActivation_Comedy$AIns_middle
Comedy_MPFC_middle <- AllSubs_NeuralActivation_Comedy$MPFC_middle
Horror_NAcc_middle <- AllSubs_NeuralActivation_Horror$NAcc_middle
Horror_AIns_middle <- AllSubs_NeuralActivation_Horror$AIns_middle
Horror_MPFC_middle <- AllSubs_NeuralActivation_Horror$MPFC_middle
# Define models.
M10_df <- data.frame(All_NAcc_middle, All_AIns_middle, All_MPFC_middle)
M10_C_df <- data.frame(Comedy_NAcc_middle, Comedy_AIns_middle, Comedy_MPFC_middle)
M10_H_df <- data.frame(Horror_NAcc_middle, Horror_AIns_middle, Horror_MPFC_middle)
M11_df <- data.frame(All_Gross_M1_log, All_PA, All_NA, All_NAcc_middle, All_AIns_middle, All_MPFC_middle)
M11_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_middle,
Comedy_AIns_middle, Comedy_MPFC_middle)
M11_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA, Horror_NAcc_middle,
Horror_AIns_middle, Horror_MPFC_middle)
# Define offset variables.
All_NAcc_offset <- AllSubs_NeuralActivation$NAcc_offset
All_AIns_offset <- AllSubs_NeuralActivation$AIns_offset
All_MPFC_offset <- AllSubs_NeuralActivation$MPFC_offset
Comedy_NAcc_offset <- AllSubs_NeuralActivation_Comedy$NAcc_offset
Comedy_AIns_offset <- AllSubs_NeuralActivation_Comedy$AIns_offset
Comedy_MPFC_offset <- AllSubs_NeuralActivation_Comedy$MPFC_offset
Horror_NAcc_offset <- AllSubs_NeuralActivation_Horror$NAcc_offset
Horror_AIns_offset <- AllSubs_NeuralActivation_Horror$AIns_offset
Horror_MPFC_offset <- AllSubs_NeuralActivation_Horror$MPFC_offset
# Define models.
M12_df <- data.frame(All_NAcc_offset, All_AIns_offset, All_MPFC_offset)
M12_C_df <- data.frame(Comedy_NAcc_offset, Comedy_AIns_offset, Comedy_MPFC_offset)
M12_H_df <- data.frame(Horror_NAcc_offset, Horror_AIns_offset, Horror_MPFC_offset)
M13_df <- data.frame(All_Gross_M1_log, All_PA, All_NA, All_NAcc_offset, All_AIns_offset, All_MPFC_offset)
M13_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_offset,
Comedy_AIns_offset, Comedy_MPFC_offset)
M13_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA, Horror_NAcc_offset,
Horror_AIns_offset, Horror_MPFC_offset)
M14_df <- data.frame(All_Gross_M1_log, All_PA, All_NA, All_NAcc_onset, All_AIns_middle, All_MPFC_offset)
M14_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_onset,
Comedy_AIns_middle, Comedy_MPFC_offset)
M14_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA, Horror_NAcc_onset,
Horror_AIns_middle, Horror_MPFC_offset)
Notes:
- Have note removed outliers from data.
Neuroforecasting: First Month US.
M1: Aggregste data
Call:
lm(formula = log(Gross_US_M1) ~ Type + +scale(Theaters_US_M1) +
Type:scale(Theaters_US_M1), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-0.77903 -0.23205 -0.05965 0.21883 0.83396
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 17.21275 0.12503 137.673 < 2e-16 ***
Typecomedy -0.03297 0.16727 -0.197 0.845
scale(Theaters_US_M1) 0.96069 0.17747 5.413 1.13e-05 ***
Typecomedy:scale(Theaters_US_M1) -0.24037 0.20114 -1.195 0.243
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.4365 on 26 degrees of freedom
Multiple R-squared: 0.7846, Adjusted R-squared: 0.7597
F-statistic: 31.56 on 3 and 26 DF, p-value: 8.065e-09
R2m R2c
[1,] 0.7655209 0.7655209
[1] 41.10136



M2: Affective data alone
Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Pos_arousal_scaled) +
scale(Neg_arousal_scaled) + Type:scale(Pos_arousal_scaled) +
Type:scale(Neg_arousal_scaled), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-1.28214 -0.72117 0.09017 0.48384 1.31867
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 17.6237 0.6388 27.591 <2e-16 ***
Typecomedy -1.8889 1.1201 -1.686 0.105
scale(Pos_arousal_scaled) -0.4337 0.5091 -0.852 0.403
scale(Neg_arousal_scaled) -0.5115 0.4292 -1.192 0.245
Typecomedy:scale(Pos_arousal_scaled) 0.8369 0.5671 1.476 0.153
Typecomedy:scale(Neg_arousal_scaled) -0.6944 1.1435 -0.607 0.549
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.8382 on 24 degrees of freedom
Multiple R-squared: 0.2666, Adjusted R-squared: 0.1138
F-statistic: 1.745 on 5 and 24 DF, p-value: 0.1628
R2m R2c
[1,] 0.2312592 0.2312592
[1] 81.85067



M3: Aggregate and affective data alone
Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Pos_arousal_scaled) +
scale(Neg_arousal_scaled) + Type:scale(Pos_arousal_scaled) +
Type:scale(Neg_arousal_scaled), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-1.28214 -0.72117 0.09017 0.48384 1.31867
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 17.6237 0.6388 27.591 <2e-16 ***
Typecomedy -1.8889 1.1201 -1.686 0.105
scale(Pos_arousal_scaled) -0.4337 0.5091 -0.852 0.403
scale(Neg_arousal_scaled) -0.5115 0.4292 -1.192 0.245
Typecomedy:scale(Pos_arousal_scaled) 0.8369 0.5671 1.476 0.153
Typecomedy:scale(Neg_arousal_scaled) -0.6944 1.1435 -0.607 0.549
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.8382 on 24 degrees of freedom
Multiple R-squared: 0.2666, Adjusted R-squared: 0.1138
F-statistic: 1.745 on 5 and 24 DF, p-value: 0.1628
R2m R2c
[1,] 0.2312592 0.2312592
[1] 81.85067
M4: ISC data alone
Call:
lm(formula = log(Gross_US_M1) ~ Type + +scale(NAcc_ISC) + scale(AIns_ISC) +
scale(MPFC_ISC) + Type:scale(NAcc_ISC) + Type:scale(AIns_ISC) +
Type:scale(MPFC_ISC), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-1.14090 -0.55890 0.00876 0.38761 1.71768
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 17.36042 0.24509 70.834 <2e-16 ***
Typecomedy -0.30276 0.33234 -0.911 0.3722
scale(NAcc_ISC) 0.84866 0.39246 2.162 0.0417 *
scale(AIns_ISC) -0.22265 0.22743 -0.979 0.3382
scale(MPFC_ISC) -0.01466 0.35266 -0.042 0.9672
Typecomedy:scale(NAcc_ISC) -0.87318 0.45156 -1.934 0.0661 .
Typecomedy:scale(AIns_ISC) 0.22660 0.42109 0.538 0.5959
Typecomedy:scale(MPFC_ISC) 0.26848 0.41607 0.645 0.5254
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.8646 on 22 degrees of freedom
Multiple R-squared: 0.2847, Adjusted R-squared: 0.05711
F-statistic: 1.251 on 7 and 22 DF, p-value: 0.3187
R2m R2c
[1,] 0.2319176 0.2319176
[1] 85.10071



M5: ISC data + affective data + behavioral data
Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) +
scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_ISC) +
scale(AIns_ISC) + scale(MPFC_ISC) + Type:scale(Theaters_US_M1) +
Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) +
Type:scale(NAcc_ISC) + Type:scale(AIns_ISC) + Type:scale(MPFC_ISC),
data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type,
levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-0.61485 -0.19212 0.00446 0.15708 0.56374
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.85437 0.36272 46.467 < 2e-16 ***
Typecomedy -0.47852 0.68281 -0.701 0.49349
scale(Theaters_US_M1) 0.87322 0.25770 3.389 0.00375 **
scale(Pos_arousal_scaled) -0.57228 0.24573 -2.329 0.03330 *
scale(Neg_arousal_scaled) -0.15864 0.25195 -0.630 0.53782
scale(NAcc_ISC) 0.24684 0.24972 0.988 0.33762
scale(AIns_ISC) -0.12190 0.10939 -1.114 0.28157
scale(MPFC_ISC) 0.37644 0.18511 2.034 0.05892 .
Typecomedy:scale(Theaters_US_M1) -0.22804 0.28322 -0.805 0.43251
Typecomedy:scale(Pos_arousal_scaled) 0.71711 0.31280 2.293 0.03576 *
Typecomedy:scale(Neg_arousal_scaled) -0.67388 0.67056 -1.005 0.32988
Typecomedy:scale(NAcc_ISC) -0.28796 0.29943 -0.962 0.35052
Typecomedy:scale(AIns_ISC) 0.07897 0.23810 0.332 0.74445
Typecomedy:scale(MPFC_ISC) -0.30714 0.22457 -1.368 0.19032
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.401 on 16 degrees of freedom
Multiple R-squared: 0.8881, Adjusted R-squared: 0.7971
F-statistic: 9.766 on 13 and 16 DF, p-value: 2.758e-05
R2m R2c
[1,] 0.8140503 0.8140503
[1] 41.45386



M6: Neural whole data alone
Call:
lm(formula = log(Gross_US_M1) ~ Type + +scale(NAcc_whole) + scale(AIns_whole) +
scale(MPFC_whole) + Type:scale(NAcc_whole) + Type:scale(AIns_whole) +
Type:scale(MPFC_whole), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-1.30627 -0.50367 -0.05815 0.56563 2.08401
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 17.328040 0.335449 51.656 <2e-16 ***
Typecomedy 0.032407 0.478335 0.068 0.947
scale(NAcc_whole) -0.398330 0.307759 -1.294 0.209
scale(AIns_whole) 0.336009 0.367735 0.914 0.371
scale(MPFC_whole) 0.082753 0.313350 0.264 0.794
Typecomedy:scale(NAcc_whole) 0.224602 0.415180 0.541 0.594
Typecomedy:scale(AIns_whole) 0.267308 0.563928 0.474 0.640
Typecomedy:scale(MPFC_whole) 0.009879 0.390249 0.025 0.980
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.9063 on 22 degrees of freedom
Multiple R-squared: 0.2139, Adjusted R-squared: -0.03618
F-statistic: 0.8554 on 7 and 22 DF, p-value: 0.5554
R2m R2c
[1,] 0.1711325 0.1711325
[1] 87.93088



M7: Neural whole data + affective data + behavioral data
Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) +
scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_whole) +
scale(AIns_whole) + scale(MPFC_whole) + Type:scale(Theaters_US_M1) +
Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) +
Type:scale(NAcc_whole) + Type:scale(AIns_whole) + Type:scale(MPFC_whole),
data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type,
levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-0.65278 -0.19608 -0.02973 0.18957 0.67916
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.51636 0.44408 37.192 < 2e-16 ***
Typecomedy -0.23883 0.81498 -0.293 0.77325
scale(Theaters_US_M1) 0.88816 0.21290 4.172 0.00072 ***
scale(Pos_arousal_scaled) -0.75658 0.41695 -1.815 0.08838 .
scale(Neg_arousal_scaled) 0.02302 0.29660 0.078 0.93909
scale(NAcc_whole) -0.21687 0.16299 -1.331 0.20198
scale(AIns_whole) 0.25321 0.19573 1.294 0.21416
scale(MPFC_whole) 0.26510 0.23053 1.150 0.26705
Typecomedy:scale(Theaters_US_M1) -0.29817 0.25469 -1.171 0.25887
Typecomedy:scale(Pos_arousal_scaled) 0.92021 0.44743 2.057 0.05641 .
Typecomedy:scale(Neg_arousal_scaled) -1.13177 0.86775 -1.304 0.21060
Typecomedy:scale(NAcc_whole) 0.09934 0.26758 0.371 0.71532
Typecomedy:scale(AIns_whole) 0.06334 0.35150 0.180 0.85925
Typecomedy:scale(MPFC_whole) -0.23020 0.26207 -0.878 0.39273
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.4408 on 16 degrees of freedom
Multiple R-squared: 0.8648, Adjusted R-squared: 0.7549
F-statistic: 7.871 on 13 and 16 DF, p-value: 0.0001103
R2m R2c
[1,] 0.7791755 0.7791755
[1] 47.12669



M8: Neural onset data alone
Call:
lm(formula = log(Gross_US_M1) ~ Type + +scale(NAcc_onset) + scale(AIns_onset) +
scale(MPFC_onset) + Type:scale(NAcc_onset) + Type:scale(AIns_onset) +
Type:scale(MPFC_onset), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-1.54731 -0.63530 0.02601 0.60513 1.56592
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 17.48440 0.27161 64.374 <2e-16 ***
Typecomedy -0.48913 0.37162 -1.316 0.202
scale(NAcc_onset) -0.22314 0.29498 -0.756 0.457
scale(AIns_onset) 0.03296 0.32983 0.100 0.921
scale(MPFC_onset) 0.09290 0.29382 0.316 0.755
Typecomedy:scale(NAcc_onset) 0.52222 0.38334 1.362 0.187
Typecomedy:scale(AIns_onset) -0.08875 0.47760 -0.186 0.854
Typecomedy:scale(MPFC_onset) 0.21739 0.43509 0.500 0.622
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.8815 on 22 degrees of freedom
Multiple R-squared: 0.2563, Adjusted R-squared: 0.01972
F-statistic: 1.083 on 7 and 22 DF, p-value: 0.4068
R2m R2c
[1,] 0.207291 0.207291
[1] 86.2672



M9: Neural onset data + affective data + behavioral data
Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) +
scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_onset) +
scale(AIns_onset) + scale(MPFC_onset) + Type:scale(Theaters_US_M1) +
Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) +
Type:scale(NAcc_onset) + Type:scale(AIns_onset) + Type:scale(MPFC_onset),
data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type,
levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-0.52014 -0.23876 -0.03615 0.23756 0.56132
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 17.23608 0.44725 38.538 < 2e-16 ***
Typecomedy -0.29540 0.73467 -0.402 0.6929
scale(Theaters_US_M1) 0.98867 0.18438 5.362 6.35e-05 ***
scale(Pos_arousal_scaled) -0.52722 0.30611 -1.722 0.1043
scale(Neg_arousal_scaled) -0.25979 0.29657 -0.876 0.3940
scale(NAcc_onset) -0.23996 0.13220 -1.815 0.0883 .
scale(AIns_onset) -0.37559 0.19692 -1.907 0.0746 .
scale(MPFC_onset) 0.17179 0.16376 1.049 0.3098
Typecomedy:scale(Theaters_US_M1) -0.28062 0.21540 -1.303 0.2111
Typecomedy:scale(Pos_arousal_scaled) 0.62228 0.33770 1.843 0.0840 .
Typecomedy:scale(Neg_arousal_scaled) -0.01848 0.68295 -0.027 0.9787
Typecomedy:scale(NAcc_onset) 0.31243 0.19561 1.597 0.1298
Typecomedy:scale(AIns_onset) 0.49121 0.25451 1.930 0.0715 .
Typecomedy:scale(MPFC_onset) -0.33722 0.23564 -1.431 0.1716
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.3919 on 16 degrees of freedom
Multiple R-squared: 0.8931, Adjusted R-squared: 0.8062
F-statistic: 10.28 on 13 and 16 DF, p-value: 1.964e-05
R2m R2c
[1,] 0.8217067 0.8217067
[1] 40.08036



M10: Neural middle data alone
Call:
lm(formula = log(Gross_US_M1) ~ Type + +scale(NAcc_middle) +
scale(AIns_middle) + scale(MPFC_middle) + Type:scale(NAcc_middle) +
Type:scale(AIns_middle) + Type:scale(MPFC_middle), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-1.4541 -0.3154 0.1051 0.3763 1.3125
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 17.51996 0.26559 65.967 <2e-16 ***
Typecomedy -0.31587 0.37340 -0.846 0.4067
scale(NAcc_middle) -0.15908 0.28861 -0.551 0.5871
scale(AIns_middle) 0.03209 0.24933 0.129 0.8988
scale(MPFC_middle) -0.28819 0.19984 -1.442 0.1634
Typecomedy:scale(NAcc_middle) -0.45202 0.36290 -1.246 0.2260
Typecomedy:scale(AIns_middle) 0.56774 0.41899 1.355 0.1892
Typecomedy:scale(MPFC_middle) 0.75555 0.32730 2.308 0.0308 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.7834 on 22 degrees of freedom
Multiple R-squared: 0.4127, Adjusted R-squared: 0.2258
F-statistic: 2.208 on 7 and 22 DF, p-value: 0.07364
R2m R2c
[1,] 0.3476784 0.3476784
[1] 79.18813



M11: Neural middle data + affective data + behavioral data
Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) +
scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_middle) +
scale(AIns_middle) + scale(MPFC_middle) + Type:scale(Theaters_US_M1) +
Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) +
Type:scale(NAcc_middle) + Type:scale(AIns_middle) + Type:scale(MPFC_middle),
data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type,
levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-0.49625 -0.27626 -0.02888 0.22118 0.91754
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.73131 0.41218 40.592 < 2e-16 ***
Typecomedy -0.16655 0.67273 -0.248 0.807617
scale(Theaters_US_M1) 1.13536 0.26261 4.323 0.000524 ***
scale(Pos_arousal_scaled) -0.44376 0.28929 -1.534 0.144567
scale(Neg_arousal_scaled) -0.02369 0.27614 -0.086 0.932700
scale(NAcc_middle) 0.20480 0.19679 1.041 0.313465
scale(AIns_middle) 0.07197 0.14564 0.494 0.627891
scale(MPFC_middle) 0.07182 0.13765 0.522 0.608980
Typecomedy:scale(Theaters_US_M1) -0.53691 0.29533 -1.818 0.087832 .
Typecomedy:scale(Pos_arousal_scaled) 0.56395 0.33421 1.687 0.110920
Typecomedy:scale(Neg_arousal_scaled) -0.61657 0.75047 -0.822 0.423387
Typecomedy:scale(NAcc_middle) -0.32152 0.25418 -1.265 0.224017
Typecomedy:scale(AIns_middle) 0.02900 0.31858 0.091 0.928609
Typecomedy:scale(MPFC_middle) 0.07600 0.21757 0.349 0.731395
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.4529 on 16 degrees of freedom
Multiple R-squared: 0.8572, Adjusted R-squared: 0.7413
F-statistic: 7.391 on 13 and 16 DF, p-value: 0.0001632
R2m R2c
[1,] 0.7681539 0.7681539
[1] 48.75282



M12: Neural offset data alone
Call:
lm(formula = log(Gross_US_M1) ~ Type + +scale(NAcc_offset) +
scale(AIns_offset) + scale(MPFC_offset) + Type:scale(NAcc_offset) +
Type:scale(AIns_offset) + Type:scale(MPFC_offset), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-1.6064 -0.4941 0.0227 0.2969 1.6417
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 17.36157 0.25479 68.140 <2e-16 ***
Typecomedy -0.43621 0.36495 -1.195 0.245
scale(NAcc_offset) -0.29745 0.25691 -1.158 0.259
scale(AIns_offset) 0.18003 0.23437 0.768 0.451
scale(MPFC_offset) 0.34327 0.35971 0.954 0.350
Typecomedy:scale(NAcc_offset) 0.05793 0.42107 0.138 0.892
Typecomedy:scale(AIns_offset) -0.39400 0.45519 -0.866 0.396
Typecomedy:scale(MPFC_offset) -0.55753 0.42946 -1.298 0.208
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.8725 on 22 degrees of freedom
Multiple R-squared: 0.2716, Adjusted R-squared: 0.03979
F-statistic: 1.172 on 7 and 22 DF, p-value: 0.3581
R2m R2c
[1,] 0.2204664 0.2204664
[1] 85.64664



M13: Neural offset data + affective data + behavioral data
Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) +
scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_offset) +
scale(AIns_offset) + scale(MPFC_offset) + Type:scale(Theaters_US_M1) +
Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) +
Type:scale(NAcc_offset) + Type:scale(AIns_offset) + Type:scale(MPFC_offset),
data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type,
levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-0.65547 -0.23611 0.00108 0.20239 0.88517
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 17.09650 0.51466 33.219 3.44e-16 ***
Typecomedy -0.64142 0.75906 -0.845 0.4106
scale(Theaters_US_M1) 0.81173 0.41414 1.960 0.0676 .
scale(Pos_arousal_scaled) -0.48404 0.42590 -1.136 0.2725
scale(Neg_arousal_scaled) -0.31206 0.54571 -0.572 0.5754
scale(NAcc_offset) -0.04539 0.15048 -0.302 0.7668
scale(AIns_offset) 0.19325 0.17091 1.131 0.2748
scale(MPFC_offset) 0.14109 0.44483 0.317 0.7552
Typecomedy:scale(Theaters_US_M1) -0.13609 0.43329 -0.314 0.7575
Typecomedy:scale(Pos_arousal_scaled) 0.61643 0.45144 1.365 0.1910
Typecomedy:scale(Neg_arousal_scaled) -0.50775 0.85587 -0.593 0.5613
Typecomedy:scale(NAcc_offset) -0.01557 0.24056 -0.065 0.9492
Typecomedy:scale(AIns_offset) -0.01546 0.28297 -0.055 0.9571
Typecomedy:scale(MPFC_offset) -0.14299 0.46424 -0.308 0.7621
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.4617 on 16 degrees of freedom
Multiple R-squared: 0.8516, Adjusted R-squared: 0.7311
F-statistic: 7.065 on 13 and 16 DF, p-value: 0.0002153
R2m R2c
[1,] 0.7600297 0.7600297
[1] 49.90823



M14: Sequence Model
Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) +
scale(NAcc_onset) + scale(AIns_middle) + scale(MPFC_offset) +
Type:scale(NAcc_onset) + Type:scale(AIns_middle) + Type:scale(MPFC_offset),
data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type,
levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-0.55889 -0.31621 -0.01031 0.24250 0.74002
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 17.137189 0.139091 123.208 < 2e-16 ***
Typecomedy 0.067211 0.195551 0.344 0.7345
scale(Theaters_US_M1) 0.783030 0.095518 8.198 5.56e-08 ***
scale(NAcc_onset) -0.402865 0.156592 -2.573 0.0177 *
scale(AIns_middle) 0.254312 0.132874 1.914 0.0694 .
scale(MPFC_offset) 0.073500 0.176927 0.415 0.6820
Typecomedy:scale(NAcc_onset) 0.526895 0.188101 2.801 0.0107 *
Typecomedy:scale(AIns_middle) -0.264688 0.215387 -1.229 0.2327
Typecomedy:scale(MPFC_offset) -0.002704 0.210806 -0.013 0.9899
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.4139 on 21 degrees of freedom
Multiple R-squared: 0.8435, Adjusted R-squared: 0.7839
F-statistic: 14.15 on 8 and 21 DF, p-value: 7.115e-07
R2m R2c
[1,] 0.7960151 0.7960151
[1] 41.51536
M15: Sequence Model 2
Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) +
scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_onset) +
scale(AIns_middle) + scale(MPFC_offset) + Type:scale(Theaters_US_M1) +
Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) +
Type:scale(NAcc_onset) + Type:scale(AIns_middle) + Type:scale(MPFC_offset),
data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type,
levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-0.47757 -0.21349 -0.04138 0.24525 0.58812
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 17.08699 0.37381 45.711 <2e-16 ***
Typecomedy -0.41621 0.69549 -0.598 0.5579
scale(Theaters_US_M1) 0.70382 0.32503 2.165 0.0458 *
scale(Pos_arousal_scaled) -0.59233 0.36787 -1.610 0.1269
scale(Neg_arousal_scaled) -0.41907 0.39538 -1.060 0.3049
scale(NAcc_onset) -0.46513 0.16700 -2.785 0.0132 *
scale(AIns_middle) 0.27183 0.13628 1.995 0.0634 .
scale(MPFC_offset) 0.46078 0.38036 1.211 0.2433
Typecomedy:scale(Theaters_US_M1) -0.05661 0.34488 -0.164 0.8717
Typecomedy:scale(Pos_arousal_scaled) 0.66030 0.39984 1.651 0.1181
Typecomedy:scale(Neg_arousal_scaled) -0.17568 0.84096 -0.209 0.8372
Typecomedy:scale(NAcc_onset) 0.53599 0.20810 2.576 0.0203 *
Typecomedy:scale(AIns_middle) -0.18637 0.26301 -0.709 0.4888
Typecomedy:scale(MPFC_offset) -0.46343 0.39822 -1.164 0.2616
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.3929 on 16 degrees of freedom
Multiple R-squared: 0.8925, Adjusted R-squared: 0.8052
F-statistic: 10.22 on 13 and 16 DF, p-value: 2.04e-05
R2m R2c
[1,] 0.8208697 0.8208697
[1] 40.2331



LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkKYGBgCgojIExvYWQgbGlicmFyaWVzCmBgYHtyfQpsaWJyYXJ5KGtuaXRyKQpsaWJyYXJ5KHJtZGZvcm1hdHMpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShnZ3B1YnIpCmxpYnJhcnkoR0dhbGx5KQpsaWJyYXJ5KGNhcikKYGBgCgoKYGBge3IsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShsbWU0KQpsaWJyYXJ5KGxtZXJUZXN0KQpsaWJyYXJ5KCJNdU1JbiIpCmxpYnJhcnkobG10ZXN0KQpsaWJyYXJ5KGJvb3QpCmBgYAoKIyBSZWFkIGRhdGFzZXRzCmBgYHtyfQpBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gPC0gcmVhZC5jc3YoJy9Vc2Vycy9sdWlzYWx2YXJlei9Eb2N1bWVudHMvR2l0SHViL1JNX1RoZXNpc19OZXVyb2ZvcmVjYXN0aW5nL1Byb2Nlc3NlZERhdGEvQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0FnZ3JlZ2F0ZV9Db21iaW5lZF9jbGVhbi5jc3YnKQoKQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSA8LSByZWFkLmNzdignL1VzZXJzL2x1aXNhbHZhcmV6L0RvY3VtZW50cy9HaXRIdWIvUk1fVGhlc2lzX05ldXJvZm9yZWNhc3RpbmcvUHJvY2Vzc2VkRGF0YS9BbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQWdncmVnYXRlX0NvbWJpbmVkX0NvbWVkeV9jbGVhbi5jc3YnKQoKQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciA8LSByZWFkLmNzdignL1VzZXJzL2x1aXNhbHZhcmV6L0RvY3VtZW50cy9HaXRIdWIvUk1fVGhlc2lzX05ldXJvZm9yZWNhc3RpbmcvUHJvY2Vzc2VkRGF0YS9BbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQWdncmVnYXRlX0NvbWJpbmVkX0hvcnJvcl9jbGVhbi5jc3YnKQoKYGBgCgoKIyBDcmVhdGUgZGF0YSBmcmFtZXMgZm9yIGVhY2ggbW9kZWwuCmBgYHtyfQojIERlZmluZSBhZ2dyZWdhdGUgdmFyaWFibGVzLiAKQWxsX0dyb3NzX00xX2xvZyA8LSBsb2coQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJEdyb3NzX1VTX00xKQpBbGxfVGhlYXRlcnNfTTEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJFRoZWF0ZXJzX1VTX00xCgpDb21lZHlfR3Jvc3NfTTFfbG9nIDwtIGxvZyhBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JEdyb3NzX1VTX00xKQpDb21lZHlfVGhlYXRlcnNfTTEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRUaGVhdGVyc19VU19NMQoKSG9ycm9yX0dyb3NzX00xX2xvZyA8LSBsb2coQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRHcm9zc19VU19NMSkKSG9ycm9yX1RoZWF0ZXJzX00xIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkVGhlYXRlcnNfVVNfTTEKICAKTTFfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfTTFfbG9nLCBBbGxfVGhlYXRlcnNfTTEpIApNMV9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X0dyb3NzX00xX2xvZywgQ29tZWR5X1RoZWF0ZXJzX00xKSAKTTFfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9Hcm9zc19NMV9sb2csIEhvcnJvcl9UaGVhdGVyc19NMSkgCgojIERlZmluZSBhZmZlY3QgdmFyaWFibGVzLgpBbGxfUEEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJFBvc19hcm91c2FsX3NjYWxlZApBbGxfTkEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE5lZ19hcm91c2FsX3NjYWxlZAoKQ29tZWR5X1BBIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkUG9zX2Fyb3VzYWxfc2NhbGVkCkNvbWVkeV9OQSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE5lZ19hcm91c2FsX3NjYWxlZAoKSG9ycm9yX1BBIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkUG9zX2Fyb3VzYWxfc2NhbGVkCkhvcnJvcl9OQSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJE5lZ19hcm91c2FsX3NjYWxlZAoKTTJfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfTTFfbG9nLCBBbGxfUEEsIEFsbF9OQSkgCk0yX0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfR3Jvc3NfTTFfbG9nLCBDb21lZHlfUEEsIENvbWVkeV9OQSkgCk0yX0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfR3Jvc3NfTTFfbG9nLCBIb3Jyb3JfUEEsIEhvcnJvcl9OQSkgCmBgYAoKYGBge3J9CiMgRGVmaW5lIElTQyB2YXJpYWJsZXMuIApBbGxfTkFjY19JU0MgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE5BY2NfSVNDCkFsbF9BSW5zX0lTQyA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kQUluc19JU0MKQWxsX01QRkNfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRNUEZDX0lTQwoKQ29tZWR5X05BY2NfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkTkFjY19JU0MKQ29tZWR5X0FJbnNfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkQUluc19JU0MKQ29tZWR5X01QRkNfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkTVBGQ19JU0MKCkhvcnJvcl9OQWNjX0lTQyA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJE5BY2NfSVNDCkhvcnJvcl9BSW5zX0lTQyA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJEFJbnNfSVNDCkhvcnJvcl9NUEZDX0lTQyA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJE1QRkNfSVNDCgojIERlZmluZSBtb2RlbHMuIApNNF9kZiA8LSBkYXRhLmZyYW1lKEFsbF9OQWNjX0lTQywgQWxsX0FJbnNfSVNDLCBBbGxfTVBGQ19JU0MpIApNNF9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X05BY2NfSVNDLCBDb21lZHlfQUluc19JU0MsIENvbWVkeV9NUEZDX0lTQykgCk00X0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfTkFjY19JU0MsIEhvcnJvcl9BSW5zX0lTQywgSG9ycm9yX01QRkNfSVNDKSAKCk01X2RmIDwtIGRhdGEuZnJhbWUoQWxsX0dyb3NzX00xX2xvZywgQWxsX1BBLCBBbGxfTkEsIEFsbF9OQWNjX0lTQywgQWxsX0FJbnNfSVNDLCBBbGxfTVBGQ19JU0MpIApNNV9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X0dyb3NzX00xX2xvZywgQ29tZWR5X1BBLCBDb21lZHlfTkEsIENvbWVkeV9OQWNjX0lTQywgQ29tZWR5X0FJbnNfSVNDLCBDb21lZHlfTVBGQ19JU0MpIApNNV9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX0dyb3NzX00xX2xvZywgSG9ycm9yX1BBLCBIb3Jyb3JfTkEsIEhvcnJvcl9OQWNjX0lTQywgSG9ycm9yX0FJbnNfSVNDLCBIb3Jyb3JfTVBGQ19JU0MpIApgYGAKCmBgYHtyfQojIERlZmluZSB3aG9sZSB2YXJpYWJsZXMuIApBbGxfTkFjY193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTkFjY193aG9sZQpBbGxfQUluc193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kQUluc193aG9sZQpBbGxfTVBGQ193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTVBGQ193aG9sZQoKQ29tZWR5X05BY2Nfd2hvbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSROQWNjX3dob2xlCkNvbWVkeV9BSW5zX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkQUluc193aG9sZQpDb21lZHlfTVBGQ193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE1QRkNfd2hvbGUKCkhvcnJvcl9OQWNjX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTkFjY193aG9sZQpIb3Jyb3JfQUluc193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJEFJbnNfd2hvbGUKSG9ycm9yX01QRkNfd2hvbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRNUEZDX3dob2xlCgojIERlZmluZSBtb2RlbHMuIApNNl9kZiA8LSBkYXRhLmZyYW1lKEFsbF9OQWNjX3dob2xlLCBBbGxfQUluc193aG9sZSwgQWxsX01QRkNfd2hvbGUpIApNNl9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X05BY2Nfd2hvbGUsIENvbWVkeV9BSW5zX3dob2xlLCBDb21lZHlfTVBGQ193aG9sZSkgCk02X0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfTkFjY193aG9sZSwgSG9ycm9yX0FJbnNfd2hvbGUsIEhvcnJvcl9NUEZDX3dob2xlKSAKCk03X2RmIDwtIGRhdGEuZnJhbWUoQWxsX0dyb3NzX00xX2xvZywgQWxsX1BBLCBBbGxfTkEsIEFsbF9OQWNjX3dob2xlLCBBbGxfQUluc193aG9sZSwgQWxsX01QRkNfd2hvbGUpIApNN19DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X0dyb3NzX00xX2xvZywgQ29tZWR5X1BBLCBDb21lZHlfTkEsIENvbWVkeV9OQWNjX3dob2xlLAogICAgICAgICAgICAgICAgICAgICAgQ29tZWR5X0FJbnNfd2hvbGUsIENvbWVkeV9NUEZDX3dob2xlKSAKTTdfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9Hcm9zc19NMV9sb2csIEhvcnJvcl9QQSwgSG9ycm9yX05BLCBIb3Jyb3JfTkFjY193aG9sZSwKICAgICAgICAgICAgICAgICAgICAgIEhvcnJvcl9BSW5zX3dob2xlLCBIb3Jyb3JfTVBGQ193aG9sZSkgCmBgYAoKYGBge3J9CiMgRGVmaW5lIG9uc2V0IHZhcmlhYmxlcy4gCkFsbF9OQWNjX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiROQWNjX29uc2V0CkFsbF9BSW5zX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRBSW5zX29uc2V0CkFsbF9NUEZDX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRNUEZDX29uc2V0CgpDb21lZHlfTkFjY19vbnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE5BY2Nfb25zZXQKQ29tZWR5X0FJbnNfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRBSW5zX29uc2V0CkNvbWVkeV9NUEZDX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkTVBGQ19vbnNldAoKSG9ycm9yX05BY2Nfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciROQWNjX29uc2V0CkhvcnJvcl9BSW5zX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkQUluc19vbnNldApIb3Jyb3JfTVBGQ19vbnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJE1QRkNfb25zZXQKCiMgRGVmaW5lIG1vZGVscy4gCk04X2RmIDwtIGRhdGEuZnJhbWUoQWxsX05BY2Nfb25zZXQsIEFsbF9BSW5zX29uc2V0LCBBbGxfTVBGQ19vbnNldCkgCk04X0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfTkFjY19vbnNldCwgQ29tZWR5X0FJbnNfb25zZXQsIENvbWVkeV9NUEZDX29uc2V0KSAKTThfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9OQWNjX29uc2V0LCBIb3Jyb3JfQUluc19vbnNldCwgSG9ycm9yX01QRkNfb25zZXQpIAoKTTlfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfTTFfbG9nLCBBbGxfUEEsIEFsbF9OQSwgQWxsX05BY2Nfb25zZXQsIEFsbF9BSW5zX29uc2V0LCBBbGxfTVBGQ19vbnNldCkgCk05X0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfR3Jvc3NfTTFfbG9nLCBDb21lZHlfUEEsIENvbWVkeV9OQSwgQ29tZWR5X05BY2Nfb25zZXQsCiAgICAgICAgICAgICAgICAgICAgICBDb21lZHlfQUluc19vbnNldCwgQ29tZWR5X01QRkNfb25zZXQpIApNOV9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX0dyb3NzX00xX2xvZywgSG9ycm9yX1BBLCBIb3Jyb3JfTkEsIEhvcnJvcl9OQWNjX29uc2V0LAogICAgICAgICAgICAgICAgICAgICAgSG9ycm9yX0FJbnNfb25zZXQsIEhvcnJvcl9NUEZDX29uc2V0KSAKYGBgCgpgYGB7cn0KIyBEZWZpbmUgbWlkZGxlIHZhcmlhYmxlcy4gCkFsbF9OQWNjX21pZGRsZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTkFjY19taWRkbGUKQWxsX0FJbnNfbWlkZGxlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRBSW5zX21pZGRsZQpBbGxfTVBGQ19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE1QRkNfbWlkZGxlCgpDb21lZHlfTkFjY19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSROQWNjX21pZGRsZQpDb21lZHlfQUluc19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRBSW5zX21pZGRsZQpDb21lZHlfTVBGQ19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRNUEZDX21pZGRsZQoKSG9ycm9yX05BY2NfbWlkZGxlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTkFjY19taWRkbGUKSG9ycm9yX0FJbnNfbWlkZGxlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkQUluc19taWRkbGUKSG9ycm9yX01QRkNfbWlkZGxlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTVBGQ19taWRkbGUKCiMgRGVmaW5lIG1vZGVscy4gCk0xMF9kZiA8LSBkYXRhLmZyYW1lKEFsbF9OQWNjX21pZGRsZSwgQWxsX0FJbnNfbWlkZGxlLCBBbGxfTVBGQ19taWRkbGUpIApNMTBfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9OQWNjX21pZGRsZSwgQ29tZWR5X0FJbnNfbWlkZGxlLCBDb21lZHlfTVBGQ19taWRkbGUpIApNMTBfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9OQWNjX21pZGRsZSwgSG9ycm9yX0FJbnNfbWlkZGxlLCBIb3Jyb3JfTVBGQ19taWRkbGUpIAoKTTExX2RmIDwtIGRhdGEuZnJhbWUoQWxsX0dyb3NzX00xX2xvZywgQWxsX1BBLCBBbGxfTkEsIEFsbF9OQWNjX21pZGRsZSwgQWxsX0FJbnNfbWlkZGxlLCBBbGxfTVBGQ19taWRkbGUpIApNMTFfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9Hcm9zc19NMV9sb2csIENvbWVkeV9QQSwgQ29tZWR5X05BLCBDb21lZHlfTkFjY19taWRkbGUsCiAgICAgICAgICAgICAgICAgICAgICBDb21lZHlfQUluc19taWRkbGUsIENvbWVkeV9NUEZDX21pZGRsZSkgCk0xMV9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX0dyb3NzX00xX2xvZywgSG9ycm9yX1BBLCBIb3Jyb3JfTkEsIEhvcnJvcl9OQWNjX21pZGRsZSwKICAgICAgICAgICAgICAgICAgICAgIEhvcnJvcl9BSW5zX21pZGRsZSwgSG9ycm9yX01QRkNfbWlkZGxlKSAKYGBgCgpgYGB7cn0KIyBEZWZpbmUgb2Zmc2V0IHZhcmlhYmxlcy4gCkFsbF9OQWNjX29mZnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTkFjY19vZmZzZXQKQWxsX0FJbnNfb2Zmc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRBSW5zX29mZnNldApBbGxfTVBGQ19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE1QRkNfb2Zmc2V0CgpDb21lZHlfTkFjY19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSROQWNjX29mZnNldApDb21lZHlfQUluc19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRBSW5zX29mZnNldApDb21lZHlfTVBGQ19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRNUEZDX29mZnNldAoKSG9ycm9yX05BY2Nfb2Zmc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTkFjY19vZmZzZXQKSG9ycm9yX0FJbnNfb2Zmc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkQUluc19vZmZzZXQKSG9ycm9yX01QRkNfb2Zmc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTVBGQ19vZmZzZXQKCiMgRGVmaW5lIG1vZGVscy4gCk0xMl9kZiA8LSBkYXRhLmZyYW1lKEFsbF9OQWNjX29mZnNldCwgQWxsX0FJbnNfb2Zmc2V0LCBBbGxfTVBGQ19vZmZzZXQpIApNMTJfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9OQWNjX29mZnNldCwgQ29tZWR5X0FJbnNfb2Zmc2V0LCBDb21lZHlfTVBGQ19vZmZzZXQpIApNMTJfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9OQWNjX29mZnNldCwgSG9ycm9yX0FJbnNfb2Zmc2V0LCBIb3Jyb3JfTVBGQ19vZmZzZXQpIAoKTTEzX2RmIDwtIGRhdGEuZnJhbWUoQWxsX0dyb3NzX00xX2xvZywgQWxsX1BBLCBBbGxfTkEsIEFsbF9OQWNjX29mZnNldCwgQWxsX0FJbnNfb2Zmc2V0LCBBbGxfTVBGQ19vZmZzZXQpIApNMTNfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9Hcm9zc19NMV9sb2csIENvbWVkeV9QQSwgQ29tZWR5X05BLCBDb21lZHlfTkFjY19vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICBDb21lZHlfQUluc19vZmZzZXQsIENvbWVkeV9NUEZDX29mZnNldCkgCk0xM19IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX0dyb3NzX00xX2xvZywgSG9ycm9yX1BBLCBIb3Jyb3JfTkEsIEhvcnJvcl9OQWNjX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgIEhvcnJvcl9BSW5zX29mZnNldCwgSG9ycm9yX01QRkNfb2Zmc2V0KSAKYGBgCgpgYGB7cn0KCk0xNF9kZiA8LSBkYXRhLmZyYW1lKEFsbF9Hcm9zc19NMV9sb2csIEFsbF9QQSwgQWxsX05BLCBBbGxfTkFjY19vbnNldCwgQWxsX0FJbnNfbWlkZGxlLCBBbGxfTVBGQ19vZmZzZXQpIApNMTRfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9Hcm9zc19NMV9sb2csIENvbWVkeV9QQSwgQ29tZWR5X05BLCBDb21lZHlfTkFjY19vbnNldCwKICAgICAgICAgICAgICAgICAgICAgIENvbWVkeV9BSW5zX21pZGRsZSwgQ29tZWR5X01QRkNfb2Zmc2V0KSAKTTE0X0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfR3Jvc3NfTTFfbG9nLCBIb3Jyb3JfUEEsIEhvcnJvcl9OQSwgSG9ycm9yX05BY2Nfb25zZXQsCiAgICAgICAgICAgICAgICAgICAgICBIb3Jyb3JfQUluc19taWRkbGUsIEhvcnJvcl9NUEZDX29mZnNldCkgCmBgYAoKIyBOb3RlczogCiAtIEhhdmUgbm90ZSByZW1vdmVkIG91dGxpZXJzIGZyb20gZGF0YS4KCiMgTmV1cm9mb3JlY2FzdGluZzogRmlyc3QgTW9udGggVVMuCiMjIE0xOiBBZ2dyZWdzdGUgZGF0YSAKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTEgPC0gbG0obG9nKEdyb3NzX1VTX00xKSB+IFR5cGUgKwogICAgICAgICArIHNjYWxlKFRoZWF0ZXJzX1VTX00xKQogICAgICAgICAjKyBXZWVrc19hdmdfcGVyX3RoZWF0ZXIKICAgICAgICAgKyBUeXBlOnNjYWxlKFRoZWF0ZXJzX1VTX00xKQogICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE0xKQpyLnNxdWFyZWRHTE1NKE0xKQpBSUMoTTEpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNMV9kZikKZ2dwYWlycyhNMV9DX2RmKQpnZ3BhaXJzKE0xX0hfZGYpCmBgYAoKCgojIyBNMjogQWZmZWN0aXZlIGRhdGEgYWxvbmUKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTIgPC0gbG0obG9nKEdyb3NzX1VTX00xKSB+IFR5cGUgCiAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgKyBzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICsgVHlwZTpzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTIpCnIuc3F1YXJlZEdMTU0oTTIpCkFJQyhNMikKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0yX2RmKQpnZ3BhaXJzKE0yX0NfZGYpCmdncGFpcnMoTTJfSF9kZikKYGBgCgojIyBNMzogQWdncmVnYXRlIGFuZCBhZmZlY3RpdmUgZGF0YSBhbG9uZQpgYGB7ciwgZWNobyA9IEZBTFNFfQpNMyA8LSBsbShsb2coR3Jvc3NfVVNfTTEpIH4gVHlwZSAKICAgICAgICAgIysgc2NhbGUoVGhlYXRlcnNfVVNfTTEpCiAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgKyBzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICMrIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfTTEpCiAgICAgICAgICsgVHlwZTpzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTMpCnIuc3F1YXJlZEdMTU0oTTMpCkFJQyhNMykKYGBgCgojIE00OiBJU0MgZGF0YSBhbG9uZQpgYGB7ciwgZWNobyA9IEZBTFNFfQpNNCA8LSBsbShsb2coR3Jvc3NfVVNfTTEpIH4gVHlwZSArIAogICAgICAgICAgICAgICsgc2NhbGUoTkFjY19JU0MpIAogICAgICAgICAgICAgICsgc2NhbGUoQUluc19JU0MpIAogICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19JU0MpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX0lTQykgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfSVNDKSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19JU0MpIAogICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTQpCnIuc3F1YXJlZEdMTU0oTTQpCkFJQyhNNCkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE00X2RmKQpnZ3BhaXJzKE00X0NfZGYpCmdncGFpcnMoTTRfSF9kZikKYGBgCgojIE01OiBJU0MgZGF0YSArIGFmZmVjdGl2ZSBkYXRhICsgYmVoYXZpb3JhbCBkYXRhCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck01IDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlIAogICAgICAgICAgICAgKyBzY2FsZShUaGVhdGVyc19VU19NMSkgCiAgICAgICAgICAgICArIHNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkgIAogICAgICAgICAgICAgIysgc2NhbGUoV19zY29yZV9zY2FsZWQpIAogICAgICAgICAgICAgKyBzY2FsZShOQWNjX0lTQykgCiAgICAgICAgICAgICArIHNjYWxlKEFJbnNfSVNDKSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19JU0MpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFRoZWF0ZXJzX1VTX00xKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKQogICAgICAgICAgICAgIysgVHlwZTpzY2FsZShXX3Njb3JlX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX0lTQykgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc19JU0MpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE1QRkNfSVNDKQogICAgICAgICAgICAgLCBkYXRhID0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uICU+JSBtdXRhdGUoVHlwZSA9IGZhY3RvcihUeXBlLCBsZXZlbHMgPSBjKCJob3Jyb3IiLCAiY29tZWR5IikpKSkKc3VtbWFyeShNNSkKci5zcXVhcmVkR0xNTShNNSkKQUlDKE01KQoKIyBDcmVhdGUgcGFpcnMgcGxvdC4gCmdncGFpcnMoTTVfZGYpCmdncGFpcnMoTTVfQ19kZikKZ2dwYWlycyhNNV9IX2RmKQpgYGAKCiMgTTY6IE5ldXJhbCB3aG9sZSBkYXRhIGFsb25lCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck02IDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlICsgCiAgICAgICAgICAgICAgIysgVGhlYXRlcnNfVVNfVzFfbnVtIAogICAgICAgICAgICAgICsgc2NhbGUoTkFjY193aG9sZSkgCiAgICAgICAgICAgICAgKyBzY2FsZShBSW5zX3dob2xlKSAKICAgICAgICAgICAgICArIHNjYWxlKE1QRkNfd2hvbGUpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX3dob2xlKSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc193aG9sZSkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE1QRkNfd2hvbGUpIAogICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTYpCnIuc3F1YXJlZEdMTU0oTTYpCkFJQyhNNikKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE02X2RmKQpnZ3BhaXJzKE02X0NfZGYpCmdncGFpcnMoTTZfSF9kZikKYGBgCgojIE03OiBOZXVyYWwgd2hvbGUgZGF0YSArIGFmZmVjdGl2ZSBkYXRhICsgYmVoYXZpb3JhbCBkYXRhCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck03IDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlIAogICAgICAgICAgICAgKyBzY2FsZShUaGVhdGVyc19VU19NMSkKICAgICAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfd2hvbGUpIAogICAgICAgICAgICAgKyBzY2FsZShBSW5zX3dob2xlKSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ193aG9sZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfTTEpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX3dob2xlKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX3dob2xlKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX3dob2xlKQogICAgICAgICAgICAgLCBkYXRhID0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uICU+JSBtdXRhdGUoVHlwZSA9IGZhY3RvcihUeXBlLCBsZXZlbHMgPSBjKCJob3Jyb3IiLCAiY29tZWR5IikpKSkKc3VtbWFyeShNNykKci5zcXVhcmVkR0xNTShNNykKQUlDKE03KQoKIyBDcmVhdGUgcGFpcnMgcGxvdC4gCmdncGFpcnMoTTdfZGYpCmdncGFpcnMoTTdfQ19kZikKZ2dwYWlycyhNN19IX2RmKQpgYGAKCiMgTTg6IE5ldXJhbCBvbnNldCBkYXRhIGFsb25lCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck04IDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlICsgCiAgICAgICAgICAgICAgKyBzY2FsZShOQWNjX29uc2V0KSAKICAgICAgICAgICAgICArIHNjYWxlKEFJbnNfb25zZXQpIAogICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19vbnNldCkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5BY2Nfb25zZXQpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX29uc2V0KSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19vbnNldCkgCiAgICAgICAgICAgICAgLCBkYXRhID0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uICU+JSBtdXRhdGUoVHlwZSA9IGZhY3RvcihUeXBlLCBsZXZlbHMgPSBjKCJob3Jyb3IiLCAiY29tZWR5IikpKSkKc3VtbWFyeShNOCkKci5zcXVhcmVkR0xNTShNOCkKQUlDKE04KQoKIyBDcmVhdGUgcGFpcnMgcGxvdC4gCmdncGFpcnMoTThfZGYpCmdncGFpcnMoTThfQ19kZikKZ2dwYWlycyhNOF9IX2RmKQpgYGAKCiMgTTk6IE5ldXJhbCBvbnNldCBkYXRhICsgYWZmZWN0aXZlIGRhdGEgKyBiZWhhdmlvcmFsIGRhdGEKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTkgPC0gbG0obG9nKEdyb3NzX1VTX00xKSB+IFR5cGUgCiAgICAgICAgICAgICArIHNjYWxlKFRoZWF0ZXJzX1VTX00xKQogICAgICAgICAgICAgIysgVG90YWxfd2Vla3MgCiAgICAgICAgICAgICAjKyBXZWVrc19hdmdfcGVyX3RoZWF0ZXIKICAgICAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICAjKyBzY2FsZShXX3Njb3JlX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfb25zZXQpIAogICAgICAgICAgICAgKyBzY2FsZShBSW5zX29uc2V0KSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfTTEpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICMrIFR5cGU6c2NhbGUoV19zY29yZV9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19vbnNldCkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTkpCnIuc3F1YXJlZEdMTU0oTTkpCkFJQyhNOSkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE05X2RmKQpnZ3BhaXJzKE05X0NfZGYpCmdncGFpcnMoTTlfSF9kZikKYGBgCgojIE0xMDogTmV1cmFsIG1pZGRsZSBkYXRhIGFsb25lCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck0xMCA8LSBsbShsb2coR3Jvc3NfVVNfTTEpIH4gVHlwZSArIAogICAgICAgICAgICAgICsgc2NhbGUoTkFjY19taWRkbGUpIAogICAgICAgICAgICAgICsgc2NhbGUoQUluc19taWRkbGUpIAogICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19taWRkbGUpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX21pZGRsZSkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19taWRkbGUpIAogICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTEwKQpyLnNxdWFyZWRHTE1NKE0xMCkKQUlDKE0xMCkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0xMF9kZikKZ2dwYWlycyhNMTBfQ19kZikKZ2dwYWlycyhNMTBfSF9kZikKYGBgCgojIE0xMTogTmV1cmFsIG1pZGRsZSBkYXRhICsgYWZmZWN0aXZlIGRhdGEgKyBiZWhhdmlvcmFsIGRhdGEKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTExIDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlIAogICAgICAgICAgICAgKyBzY2FsZShUaGVhdGVyc19VU19NMSkKICAgICAgICAgICAgICMrIFRvdGFsX3dlZWtzIAogICAgICAgICAgICAgIysgV2Vla3NfYXZnX3Blcl90aGVhdGVyCiAgICAgICAgICAgICArIHNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkgIAogICAgICAgICAgICAgIysgc2NhbGUoV19zY29yZV9zY2FsZWQpIAogICAgICAgICAgICAgKyBzY2FsZShOQWNjX21pZGRsZSkgCiAgICAgICAgICAgICArIHNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19taWRkbGUpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFRoZWF0ZXJzX1VTX00xKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19taWRkbGUpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX21pZGRsZSkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTExKQpyLnNxdWFyZWRHTE1NKE0xMSkKQUlDKE0xMSkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0xMV9kZikKZ2dwYWlycyhNMTFfQ19kZikKZ2dwYWlycyhNMTFfSF9kZikKYGBgCgojIE0xMjogTmV1cmFsIG9mZnNldCBkYXRhIGFsb25lCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck0xMiA8LSBsbShsb2coR3Jvc3NfVVNfTTEpIH4gVHlwZSArIAogICAgICAgICAgICAgICsgc2NhbGUoTkFjY19vZmZzZXQpIAogICAgICAgICAgICAgICsgc2NhbGUoQUluc19vZmZzZXQpIAogICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19vZmZzZXQpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX29mZnNldCkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfb2Zmc2V0KSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19vZmZzZXQpIAogICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTEyKQpyLnNxdWFyZWRHTE1NKE0xMikKQUlDKE0xMikKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0xMl9kZikKZ2dwYWlycyhNMTJfQ19kZikKZ2dwYWlycyhNMTJfSF9kZikKYGBgCgojIE0xMzogTmV1cmFsIG9mZnNldCBkYXRhICsgYWZmZWN0aXZlIGRhdGEgKyBiZWhhdmlvcmFsIGRhdGEKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTEzIDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlIAogICAgICAgICAgICAgKyBzY2FsZShUaGVhdGVyc19VU19NMSkKICAgICAgICAgICAgICMrIFRvdGFsX3dlZWtzIAogICAgICAgICAgICAgIysgV2Vla3NfYXZnX3Blcl90aGVhdGVyCiAgICAgICAgICAgICArIHNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkgIAogICAgICAgICAgICAgIysgc2NhbGUoV19zY29yZV9zY2FsZWQpIAogICAgICAgICAgICAgKyBzY2FsZShOQWNjX29mZnNldCkgCiAgICAgICAgICAgICArIHNjYWxlKEFJbnNfb2Zmc2V0KSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19vZmZzZXQpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFRoZWF0ZXJzX1VTX00xKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vZmZzZXQpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfb2Zmc2V0KSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX29mZnNldCkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTEzKQpyLnNxdWFyZWRHTE1NKE0xMykKQUlDKE0xMykKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0xM19kZikKZ2dwYWlycyhNMTNfQ19kZikKZ2dwYWlycyhNMTNfSF9kZikKYGBgCgojIE0xNDogU2VxdWVuY2UgTW9kZWwKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTE0IDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlIAogICAgICAgICAgICAgKyBzY2FsZShUaGVhdGVyc19VU19NMSkKICAgICAgICAgICAgICMrIFRvdGFsX3dlZWtzIAogICAgICAgICAgICAgIysgV2Vla3NfYXZnX3Blcl90aGVhdGVyCiAgICAgICAgICAgICAjKyBzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpIAogICAgICAgICAgICAgIysgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICAjKyBzY2FsZShXX3Njb3JlX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfb25zZXQpIAogICAgICAgICAgICAgKyBzY2FsZShBSW5zX21pZGRsZSkgCiAgICAgICAgICAgICArIHNjYWxlKE1QRkNfb2Zmc2V0KSAKICAgICAgICAgICAgICMrIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfTTEpCiAgICAgICAgICAgICAjKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICMrIFR5cGU6c2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5BY2Nfb25zZXQpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX29mZnNldCkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTE0KQpyLnNxdWFyZWRHTE1NKE0xNCkKQUlDKE0xNCkKYGBgCgojIE0xNTogU2VxdWVuY2UgTW9kZWwgMgpgYGB7ciwgZWNobyA9IEZBTFNFfQogIyBFZmZlY3RzIGJlY29tZSBtb3JlIHNpZ25pZmljYW50IGlmIHdlIHJlbW92ZSAnVGhlYXRlcl9udW0nIHByZWRpY3Rvci4uLiB3ZSBjYW4gZG8gdGhhdCB3aXRoIHRoZSAKIyAnR3Jvc3NPdmVyVGhlYXRlcnMnIHZhcmlhYmxlLCBob3dldmVyIE1QRkMgbG9va3MgYSBiaXQgZnVubnkuICAKTTE1IDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlCiAgICAgICAgICAgICArIHNjYWxlKFRoZWF0ZXJzX1VTX00xKQogICAgICAgICAgICAgIysgV2Vla3NfYXZnX3Blcl90aGVhdGVyCiAgICAgICAgICAgICArIHNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkgIAogICAgICAgICAgICAgKyBzY2FsZShOQWNjX29uc2V0KSAKICAgICAgICAgICAgICsgc2NhbGUoQUluc19taWRkbGUpIAogICAgICAgICAgICAgKyBzY2FsZShNUEZDX29mZnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfTTEpICMgU2hvdWxkIHdlIGhhdmUgYSB0aGVhdGVycyBpbnRlcmFjdGlvbj8gCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX29uc2V0KSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX21pZGRsZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19vZmZzZXQpCiAgICAgICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE0xNSkKci5zcXVhcmVkR0xNTShNMTUpCkFJQyhNMTUpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNMTRfZGYpCmdncGFpcnMoTTE0X0NfZGYpCmdncGFpcnMoTTE0X0hfZGYpCmBgYA==